--- title: "07-新涉及到的注解 @Override @Autowired" created: 2025-12-02 tags: - 项目 aliases: - 新涉及到的注解 @Override @Autowired - 新涉及到的注解 @Override @Autowired --- # 新涉及到的注解 @Override @Autowired ### `@Override` 注解 #### 作用和功能: - `@Override` 是 Java 自带的注解,用来标识一个方法是从父类或接口中继承或实现的。它是编译时的注解,表示被标注的方法是对父类或接口方法的重写。 - 当你使用 `@Override` 注解时,Java 编译器会检查你是否正确重写了父类的方法。如果方法签名不匹配,编译器会报错。 #### 主要用途: - 增强代码的可读性:清楚地表明方法是重写的。 - 提供编译时的错误检查,防止由于方法名拼写错误或参数类型不匹配导致的问题。 #### 示例: ```java public class Parent { public void display() { System.out.println("Display in Parent"); } } public class Child extends Parent { @Override // 表示重写父类的 display() 方法 public void display() { System.out.println("Display in Child"); } } ``` 如果在 `Child` 类中的 `display` 方法没有正确地覆盖 `Parent` 类的方法,而你加上了 `@Override` 注解,编译器就会报错。这有助于避免无意中写错方法名或参数类型。 ### `@Autowired` 注解 #### 作用和功能: - `@Autowired` 是 Spring 框架中的注解,用于自动注入依赖。它可以在字段(成员变量)、构造器、setter 方法上使用。 - 当使用 `@Autowired` 注解时,Spring 会自动在容器中寻找匹配的 Bean 并注入到被标注的字段或方法中。这种依赖注入(DI, Dependency Injection)是 Spring 的核心特性之一。 #### 自动注入的规则: - Spring 会通过类型(by type)来查找匹配的 Bean。如果找到多个同类型的 Bean,可以通过 `@Qualifier` 指定 Bean 的名称。 - 如果没有找到合适的 Bean,或者找到多个而不明确时,会报出 `NoSuchBeanDefinitionException` 或 `NoUniqueBeanDefinitionException`。 #### 示例: 1. **字段注入**: ```java @Service public class UserService { @Autowired private UserRepository userRepository; // 自动注入 UserRepository 对象 // ... } ``` 2. **构造器注入**(推荐使用): ```java @Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } // ... } ``` 使用构造器注入,可以让依赖注入在实例化时完成,有助于创建不可变对象,并且更易于单元测试。 3. **Setter 方法注入**: ```java @Service public class UserService { private UserRepository userRepository; @Autowired public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; } // ... } ``` #### `@Autowired` 的优势: - 使得类与类之间的依赖关系更加清晰。 - 提高代码的可维护性,使得更容易进行模块的单独测试和维护。 - 通过依赖注入,可以更好地实现面向接口编程和解耦合。 ### 总结: - `@Override` 主要用于重写父类或接口中的方法,并进行编译时检查。 - `@Autowired` 用于在 Spring 中自动注入依赖对象,使得类之间的依赖关系更清晰、更易维护。 --- **项目分区导航**: [[06-处理http请求的注解|处理http请求的注解]] ⬅️ | 07-新涉及到的注解 @Override @Autowired | ➡️ [[00-关于pom.xml|关于pom.xml]]